#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;

////int main()
////{
////	string s1("zhangsan");
////	string s2(s1);
////	//s1 = "Hello World";
////	string s3("hello world", 5);
////	string s4(5, 'x');
////	string s5(s1, 2, 6);
////	s1 = s3;
////
////	cout << s1 << endl;
////	cout << s2 << endl;
////	cout << s3 << endl;
////	cout << s4 << endl;
////	cout << s5 << endl;
////
////	return 0;
////}
//
//int main()
//{
//	string s1("Hello ");
//	/*s1.push_back('w');
//	s1.push_back('o');
//	s1.push_back('r');
//	s1.push_back('l');
//	s1.push_back('d');*/
//
//	//s1.append("world");
//
//	s1 += "world";
//	cout << s1 << endl;
//
//	//for (int i = 0; i < s1.size(); i++)
//	//{
//	//	cout << s1[i];
//	//}
//	//cout << endl;
//
//	//for (int i = 0; i < s1.size(); i++)
//	//{
//	//	s1[i]++;
//	//	cout << s1[i];
//	//}
//	//cout << endl;
//
//	string::iterator it = s1.begin();
//	while (it != s1.end())
//	{
//		(*it)++;
//		cout << *it;
//		it++;
//	}
//	cout << endl;
//
//	for (auto& ch : s1)
//	{
//		cout << ch;
//	}
//	cout << endl;
//
//	reverse(s1.begin(), s1.end());
//	cout << s1 << endl;
//
//
//	return 0;
//}

class Solution {
public:
    static string addStrings(string num1, string num2) {
        int end1 = num1.size() - 1;
        int end2 = num2.size() - 1;
        int carry = 0;
        string sret;
        while (end1 >= 0 || end2 >= 0)
        {
            int val1 = 0, val2 = 0;
            if (end1 >= 0)
                val1 = num1[end1] - '0';
            if (end2 >= 0)
                val2 = num2[end2] - '0';

            int ret = val1 + val2 + carry;
            carry = ret / 10;
            ret %= 10;

            sret += (ret + '0');
            --end1;
            --end2;
        }
        if (carry == 1)
        {
            sret += '1';
        }
        reverse(sret.begin(), sret.end());
        return sret;
    }
};

int main()
{
    string s1 = "9";
    string s2 = "99";
    Solution::addStrings(s1, s2);
    return 0;
}